jqgrid中当前页数据动态搜索,显示隐藏对应行

项目需要,动态搜索数据,因为数据可以一次性一页加载,同时不想增加服务器压力,动态搜索决定放到本地进行。

于是写了下面一段js代码

$(function() {
	$("#local-dynamic-select").bind('input propertychange', function() {
		// alert($(this).val())
		var searchStr = $(this).val();
		var tableid = $(this).data("tableid");
		var selectrow = $(this).data("selectrow");
		var obj = $("#" + tableid).jqGrid("getRowData");
		for (i = 0; i < obj.length; i++) {
			if (obj[i][selectrow].indexOf(searchStr) < 0) {
				hideRow(tableid, i + 1);//隐藏行的方法
			} else {
				showRow(tableid, i + 1);//显示行的方法
			}
		}
	});
});

只需要在表单前面加上对应的input就可以,里面自定义了两个属性,方便动态使用

<input type="text" id="local-dynamic-select" data-tableid="grid-table" data-selectrow="selectRow"/>

对应的隐藏显示行方法,去网上找到了

/**
 * 隐藏行
 */
function hideRow(tableId, rowId) {
	$("#" + tableId).setRowData(rowId, null, {
		display : 'none'
	});
}
/**
 * 显示行
 */
function showRow(tableId, rowId) {
	$("#" + tableId).setRowData(rowId, null, {
		display : 'block'
	});
}

setRowData方法是jqgrid中更新行的方法,对应三个参数rowid,data, cssprop。(介绍内容从jqgrid中文api中获取)
rowid:为行id
data:格式:{name1:value1,name2:value2…} name为colModel中名称;
cssprop:如果是string则会使用addClass方法将其加入到行的css中,如果是array或者对象 则会直接加到style属性中


如此,实现了本地的动态搜索显示数据,需要的是第一次加载所有的数据到页面上。

使用过程中出现了一个问题,问题出在显示行上面,显示的行不与表头宽度对应,通过检查代码,发现问题出现显示行时,display:block上面,block使得行的样式部分变化,于是做出了如下改动

/**
 * 显示行
 */
function showRow(tableId, rowId) {
	$("#" + tableId).setRowData(rowId, null, {
		display : ''
	});
}

问题解决

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值